package com.vueapi.utils;

import com.vueapi.constant.RedisEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

/**
 * @Classname RedisUtils
 * @Description TODO
 * @Created by 赵宏建
 * @Date 2023/2/27 9:02
 * @Version 1.0.0
 */
@Component
public class RedisUtils {

    @Autowired
    private StringRedisTemplate redisTemplate;

    // 添加访问量
    public void addViewCountByRedis(){
        // 获取Redis中的访问量
        String redisViewCount = redisTemplate.opsForValue().get(RedisEnum.WEBSITE_VIEW_COUNT);
        // 如果为空就创建一个新的key塞进去
        if(StringUtils.isEmpty(redisViewCount)){
            redisTemplate.opsForValue().set(RedisEnum.WEBSITE_VIEW_COUNT,"0");
        }
        // 进行更新
        redisTemplate.opsForValue().increment(RedisEnum.WEBSITE_VIEW_COUNT);
    }

    // 添加文章浏览量
    public void addArticleViewCountByRedis(Integer articleId){
        String key = RedisEnum.ARTICLE_VIEW_COUNT + articleId;
        // 获取Redis中的访问量
        String redisViewCount = redisTemplate.opsForValue().get(key);
        // 如果为空就创建一个新的key塞进去
        if(StringUtils.isEmpty(redisViewCount)){
            redisTemplate.opsForValue().set(key,"0");
        }
        // 进行更新
        redisTemplate.opsForValue().increment(key);
    }

    public List<Integer> nameSpaceToIntegerList(String nameSpace){
        Set<String> keys = redisTemplate.keys(nameSpace + "*");
        ArrayList<Integer> data = new ArrayList<>();
        if(keys == null){
            return data;
        }
        for (String key : keys) {
            // 获取key对应值
            data.add(Integer.parseInt(key.replace(nameSpace,"")));
        }
        return data;
    }

}
